/*
 * Empresa.java
 *
 * Created on October 7, 2007, 10:50 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package petstore.model;

import java.util.Collection;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 * Entity class Empresa
 * 
 * @author Tom Hayden
 */
@Entity
@Table(name = "empresa")
@AttributeOverrides( {
        @AttributeOverride(name="id", column=@Column(name="cdempresa")),
        @AttributeOverride(name="description", column=@Column(name="nmfantasia")),
        @AttributeOverride(name="active", column=@Column(name="ativo"))
    })
public class Empresa extends CodeData {

    @Column(name = "nmrazaosocial")
    private String razaoSocial;

    @Column(name = "cnpj")
    private String CNPJ;

    @Column(name = "ie")
    private String IE;

    @Column(name = "email")
    private String email;

    @Column(name = "site")
    private String site;

    @Column(name = "msgsaidaproduto")
    private String mensagemSaidaProduto;

    @Column(name = "termohospedagem")
    private String termoHospedagem;

    @Column(name = "imprimenf")
    private boolean imprimeNF;

    @Column(name = "imprimeboleto")
    private boolean imprimeBoleto;

    @Column(name = "integractarcber")
    private boolean integraContasReceber;

    @Column(name = "integractapgar")
    private boolean integraContasPagar;

    @Column(name = "permiteestoqueneg")
    private boolean permiteEstoqueNegativo;

    @Column(name = "permiteestoquemin")
    private boolean permiteEstoqueMinimo;

    @Column(name = "atualizacustoprod")
    private boolean atualizaCustoProduto;

    @Column(name = "geralancamento")
    private boolean geraLancamento;
    
    @Column(name = "qtddiasexpsenha")
    private Short quantidadeDiasExpiraSenha;
    
    @Column(name = "senhapadrao")
    private String senhaPadrao;

    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(name="empresa_telefone",
               joinColumns={@JoinColumn(name="cdempresa", referencedColumnName="cdempresa")},
               inverseJoinColumns={@JoinColumn(name="cdtelefone", referencedColumnName="cdtelefone")})
    private Collection<Telefone> telefones;
    
    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(name="empresa_endereco",
               joinColumns={@JoinColumn(name="cdempresa", referencedColumnName="cdempresa")},
               inverseJoinColumns={@JoinColumn(name="cdendereco", referencedColumnName="cdendereco")})
    private Collection<Endereco> enderecos;
    
        /** Creates a new instance of Empresa */
    public Empresa() {
    }

    public String getRazaoSocial() {
        return razaoSocial;
    }

    public void setRazaoSocial(String razaoSocial) {
        this.razaoSocial = razaoSocial;
    }

    public String getCNPJ() {
        return CNPJ;
    }

    public void setCNPJ(String CNPJ) {
        this.CNPJ = CNPJ;
    }

    public String getIE() {
        return IE;
    }

    public void setIE(String IE) {
        this.IE = IE;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMensagemSaidaProduto() {
        return mensagemSaidaProduto;
    }

    public void setMensagemSaidaProduto(String mensagemSaidaProduto) {
        this.mensagemSaidaProduto = mensagemSaidaProduto;
    }

    public String getSite() {
        return site;
    }

    public void setSite(String site) {
        this.site = site;
    }

    public String getTermoHospedagem() {
        return termoHospedagem;
    }

    public void setTermoHospedagem(String termoHospedagem) {
        this.termoHospedagem = termoHospedagem;
    }

    public boolean getImprimeNF() {
        return imprimeNF;
    }

    public void setImprimeNF(boolean imprimeNF) {
        this.imprimeNF = imprimeNF;
    }

    public boolean getImprimeBoleto() {
        return imprimeBoleto;
    }

    public void setImprimeBoleto(boolean imprimeBoleto) {
        this.imprimeBoleto = imprimeBoleto;
    }

    public boolean getIntegraContasReceber() {
        return integraContasReceber;
    }

    public void setIntegraContasReceber(boolean integraContasReceber) {
        this.integraContasReceber = integraContasReceber;
    }

    public boolean getIntegraContasPagar() {
        return integraContasPagar;
    }

    public void setIntegraContasPagar(boolean integraContasPagar) {
        this.integraContasPagar = integraContasPagar;
    }

    public boolean getPermiteEstoqueNegativo() {
        return permiteEstoqueNegativo;
    }

    public void setPermiteEstoqueNegativo(boolean permiteEstoqueNegativo) {
        this.permiteEstoqueNegativo = permiteEstoqueNegativo;
    }

    public boolean getPermiteEstoqueMinimo() {
        return permiteEstoqueMinimo;
    }

    public void setPermiteEstoqueMinimo(boolean permiteEstoqueMinimo) {
        this.permiteEstoqueMinimo = permiteEstoqueMinimo;
    }

    public boolean getAtualizaCustoProduto() {
        return atualizaCustoProduto;
    }

    public void setAtualizaCustoProduto(boolean atualizaCustoProduto) {
        this.atualizaCustoProduto = atualizaCustoProduto;
    }

    public boolean getGeraLancamento() {
        return geraLancamento;
    }

    public void setGeraLancamento(boolean geraLancamento) {
        this.geraLancamento = geraLancamento;
    }

    public Short getQuantidadeDiasExpiraSenha() {
        return quantidadeDiasExpiraSenha;
    }

    public void setQuantidadeDiasExpiraSenha(Short quantidadeDiasExpiraSenha) {
        this.quantidadeDiasExpiraSenha = quantidadeDiasExpiraSenha;
    }

    public String getSenhaPadrao() {
        return senhaPadrao;
    }

    public void setSenhaPadrao(String senhaPadrao) {
        this.senhaPadrao = senhaPadrao;
    }

    public Collection<Telefone> getTelefones() {
        return telefones;
    }

    public void setTelefones(Collection<Telefone> telefones) {
        this.telefones = telefones;
    }

    public Collection<Endereco> getEnderecos() {
        return enderecos;
    }

    public void setEnderecos(Collection<Endereco> enderecos) {
        this.enderecos = enderecos;
    }

}
